﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Visifire.Charts;
using Power.Model;
using Power.DAL;

namespace Power
{
    /// <summary>
    /// Chart.xaml 的交互逻辑
    /// </summary>
    public partial class Chart : Window
    {
        public Chart()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

        }


        public string username
        {
            get;
            set;
        }

        public string device
        {
            get;
            set;
        }



        private List<DateTime> LsTime = new List<DateTime>(){  };
        private List<string> TempLL = new List<string>() {  };
        private List<string> TempHH = new List<string>() {  };







        private void ButSpline_Click(object sender, RoutedEventArgs e)
        {
            LsTime.Clear();
            TempHH.Clear();
            TempLL.Clear();

            DateTime? dtm = datePicker1.SelectedDate;
            if (dtm == null)
            {
                MessageBox.Show("请选择日期");
                return;
                
            }
            DateTime d2m = (DateTime)dtm;

            string d1s = d2m.ToShortDateString();

            string d2s = d2m.AddDays(1).ToShortDateString();

            Monitorc[] mon = new MonitorDAL().ToFindDay(device,d1s,d2s);

            foreach (Monitorc monone in mon)
            {

                DateTime dt = Convert.ToDateTime(monone.DTime);
                LsTime.Add(dt);
                TempLL.Add(monone.TempI);
                TempHH.Add(monone.TempO);


                



            }
            











            PowerChart.Children.Clear();
            DrawDiagram("温度变化曲线", LsTime, TempLL, TempHH);
        }




        public void DrawDiagram(string name, List<DateTime> lsTime, List<string> TempLL, List<string> TempHH)
        {
            Visifire.Charts.Chart tempdiagram = new Visifire.Charts.Chart();

            //设置图标的宽度和高度
            tempdiagram.Width = 800;
            tempdiagram.Height = 540;
            tempdiagram.Margin = new Thickness(10, 10, 10, 10);
            //是否启用打印和保持图片
            tempdiagram.ToolBarEnabled = false;

            //设置图标的属性
            tempdiagram.ScrollingEnabled = false;//是否启用或禁用滚动
            tempdiagram.View3D = false;//3D效果显示

            //创建一个标题的对象
            Title diagramtitle = new Title();

            //设置标题的名称
            diagramtitle.Text = name;
            diagramtitle.Padding = new Thickness(0, 10, 5, 0);

            //向图标添加标题
            tempdiagram.Titles.Add(diagramtitle);

            //初始化一个新的Axis
            Axis xaxis = new Axis();
            //设置Axis的属性
            //图表的X轴坐标按什么来分类，如时分秒
            xaxis.IntervalType = IntervalTypes.Hours;
            //图表的X轴坐标间隔如2,3,20等，单位为xAxis.IntervalType设置的时分秒。
            xaxis.Interval = 1;
            //设置X轴的时间显示格式为7-10 11：20           
            xaxis.ValueFormatString = "HH时";
            //给图标添加Axis            
            tempdiagram.AxesX.Add(xaxis);

            Axis yAxis = new Axis();
            //设置图标中Y轴的最小值永远为0           
            yAxis.AxisMinimum = 0;
            //设置图表中Y轴的后缀          
            yAxis.Suffix = "度";
            tempdiagram.AxesY.Add(yAxis);


            // 创建一个新的数据线。               
            DataSeries InputData = new DataSeries();
            // 设置数据线的格式。               
            InputData.LegendText = "入水温度";

            InputData.RenderAs = RenderAs.Spline;//折线图

            InputData.XValueType = ChartValueTypes.DateTime;
            // 设置数据点              
            DataPoint inputpoint;
            for (int i = 0; i < lsTime.Count; i++)
            {
                // 创建一个数据点的实例。                   
                inputpoint = new DataPoint();
                // 设置X轴点                    
                inputpoint.XValue = lsTime[i];
                //设置Y轴点                   
                inputpoint.YValue = double.Parse(TempLL[i]);
                inputpoint.MarkerSize = 8;
                //dataPoint.Tag = tableName.Split('(')[0];
                //设置数据点颜色                  
                // dataPoint.Color = new SolidColorBrush(Colors.LightGray);                   
                inputpoint.MouseLeftButtonDown += new MouseButtonEventHandler(PointMouseLeftButtonDown);
                //添加数据点                   
                InputData.DataPoints.Add(inputpoint);
            }

            // 添加数据线到数据序列。                
            tempdiagram.Series.Add(InputData);


            // 创建一个新的数据线。               
            DataSeries OutputData = new DataSeries();
            // 设置数据线的格式。         

            OutputData.LegendText = "出水温度";

            OutputData.RenderAs = RenderAs.Spline;//折线图

            OutputData.XValueType = ChartValueTypes.DateTime;
            // 设置数据点              

            DataPoint OutputPoint;
            for (int i = 0; i < lsTime.Count; i++)
            {
                // 创建一个数据点的实例。                   
                OutputPoint = new DataPoint();
                // 设置X轴点                    
                OutputPoint.XValue = lsTime[i];
                //设置Y轴点                   
                OutputPoint.YValue = double.Parse(TempHH[i]);
                OutputPoint.MarkerSize = 8;
                //dataPoint2.Tag = tableName.Split('(')[0];
                //设置数据点颜色                  
                // dataPoint.Color = new SolidColorBrush(Colors.LightGray);                   
                OutputPoint.MouseLeftButtonDown += new MouseButtonEventHandler(PointMouseLeftButtonDown);
                //添加数据点                   
                OutputData.DataPoints.Add(OutputPoint);
            }
            // 添加数据线到数据序列。                
            tempdiagram.Series.Add(OutputData);

            //将生产的图表增加到Grid，然后通过Grid添加到上层Grid.           
            Grid gr = new Grid();
            gr.Children.Add(tempdiagram);

            PowerChart.Children.Add(gr);
        }


        #region 点击事件
        //点击事件
        void PointMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            //DataPoint dp = sender as DataPoint;
            //MessageBox.Show(dp.YValue.ToString());
        }
        #endregion













    }
}
